home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / DeskBus.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  6.1 KB  |  192 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        DeskBus.mod
  3.  
  4.      Contains:    Apple Desktop Bus (ADB) Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE DeskBus;
  23.  
  24. IMPORT SYSTEM, Types;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.     
  30. TYPE
  31.     ADBAddress* = CHAR;
  32.  
  33.     (*
  34.         ADBCompletionProcPtr uses register based parameters on the 68k and cannot
  35.         be written in or called from a high-level language without the help of
  36.         mixed mode or assembly glue.
  37.  
  38.         In*:
  39.          => dataBuffPtr     A0.L
  40.          => opDataAreaPtr    A2.L
  41.          => command         D0.L
  42.     *)
  43.     ADBCompletionProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE ADBCompletion*(dataBuffPtr: Types.Ptr; opDataAreaPtr: Types.Ptr; command: LONGINT); *)
  44.     ADBCompletionUPP* = Types.UniversalProcPtr;
  45.  
  46. CONST
  47.     uppADBCompletionProcInfo* = $007B9802; (* Register PROCEDURE (4 bytes in A0, 4 bytes in A2, 4 bytes in D0); *)
  48.  
  49. PROCEDURE NewADBCompletionProc*(userRoutine: ADBCompletionProcPtr): ADBCompletionUPP;
  50.     (*$IF NOT GENERATINGCFM *)
  51.     INLINE PASCAL $2E9F;
  52.     (*$END*)
  53.  
  54. PROCEDURE CallADBCompletionProc*(dataBuffPtr: Types.Ptr; opDataAreaPtr: Types.Ptr; command: LONGINT; userRoutine: ADBCompletionUPP);
  55.     (*$IF NOT GENERATINGCFM*)
  56.     INLINE PASCAL ; (*•• *)
  57.     (*To be implemented*:  Glue to move parameters into registers.*)
  58.     (*$END*)
  59. TYPE
  60.     (*
  61.         ADBDeviceDriverProcPtr uses register based parameters on the 68k and cannot
  62.         be written in or called from a high-level language without the help of
  63.         mixed mode or assembly glue.
  64.  
  65.         In*:
  66.          => devAddress      D0.B
  67.          => devType         D1.B
  68.     *)
  69.     ADBDeviceDriverProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE ADBDeviceDriver*(devAddress: ByteParameter; devType: ByteParameter); *)
  70.     ADBDeviceDriverUPP* = Types.UniversalProcPtr;
  71.  
  72. CONST
  73.     uppADBDeviceDriverProcInfo* = $00050802; (* Register PROCEDURE (1 byte in D0, 1 byte in D1); *)
  74.  
  75. PROCEDURE NewADBDeviceDriverProc*(userRoutine: ADBDeviceDriverProcPtr): ADBDeviceDriverUPP;
  76.     (*$IF NOT GENERATINGCFM *)
  77.     INLINE PASCAL $2E9F;
  78.     (*$END*)
  79.  
  80. PROCEDURE CallADBDeviceDriverProc*(devAddress: Types.ByteParameter; devType: Types.ByteParameter; userRoutine: ADBDeviceDriverUPP);
  81.     (*$IF NOT GENERATINGCFM*)
  82.     INLINE PASCAL ; (*•• *)
  83.     (*To be implemented*:  Glue to move parameters into registers.*)
  84.     (*$END*)
  85. TYPE
  86.     (*
  87.         ADBServiceRoutineProcPtr uses register based parameters on the 68k and cannot
  88.         be written in or called from a high-level language without the help of
  89.         mixed mode or assembly glue.
  90.  
  91.         In*:
  92.          => dataBuffPtr     A0.L
  93.          => completionProc    A1.L
  94.          => dataPtr         A2.L
  95.          => command         D0.L
  96.     *)
  97.     ADBServiceRoutineProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE ADBServiceRoutine*(dataBuffPtr: Types.Ptr; completionProc: ADBCompletionUPP; dataPtr: Types.Ptr; command: LONGINT); *)
  98.     ADBServiceRoutineUPP* = Types.UniversalProcPtr;
  99.  
  100. CONST
  101.     uppADBServiceRoutineProcInfo* = $0F779802; (* Register PROCEDURE (4 bytes in A0, 4 bytes in A1, 4 bytes in A2, 4 bytes in D0); *)
  102.  
  103. PROCEDURE NewADBServiceRoutineProc*(userRoutine: ADBServiceRoutineProcPtr): ADBServiceRoutineUPP;
  104.     (*$IF NOT GENERATINGCFM *)
  105.     INLINE PASCAL $2E9F;
  106.     (*$END*)
  107.  
  108. PROCEDURE CallADBServiceRoutineProc*(dataBuffPtr: Types.Ptr; completionProc: ADBCompletionUPP; dataPtr: Types.Ptr; command: LONGINT; userRoutine: ADBServiceRoutineUPP);
  109.     (*$IF NOT GENERATINGCFM*)
  110.     INLINE PASCAL ; (*•• *)
  111.     (*To be implemented*:  Glue to move parameters into registers.*)
  112.     (*$END*)
  113. TYPE
  114.     (*
  115.         ADBInitProcPtr uses register based parameters on the 68k and cannot
  116.         be written in or called from a high-level language without the help of
  117.         mixed mode or assembly glue.
  118.  
  119.         In*:
  120.          => callOrder       D0.B
  121.     *)
  122.     ADBInitProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE ADBInit*(callOrder: ByteParameter); *)
  123.     ADBInitUPP* = Types.UniversalProcPtr;
  124.  
  125. CONST
  126.     uppADBInitProcInfo* = $00000802; (* Register PROCEDURE (1 byte in D0); *)
  127.  
  128. PROCEDURE NewADBInitProc*(userRoutine: ADBInitProcPtr): ADBInitUPP;
  129.     (*$IF NOT GENERATINGCFM *)
  130.     INLINE PASCAL $2E9F;
  131.     (*$END*)
  132.  
  133. PROCEDURE CallADBInitProc*(callOrder: Types.ByteParameter; userRoutine: ADBInitUPP);
  134.     (*$IF NOT GENERATINGCFM*)
  135.     INLINE PASCAL ; (*•• *)
  136.     (*To be implemented*:  Glue to move parameters into registers.*)
  137.     (*$END*)
  138.  
  139. TYPE
  140.     ADBOpBlock* = RECORD
  141.         dataBuffPtr*:            Types.Ptr;                                    (* address of data buffer *)
  142.         opServiceRtPtr*:            ADBServiceRoutineUPP;                    (* service routine pointer *)
  143.         opDataAreaPtr*:            Types.Ptr;                                    (* optional data area address *)
  144.     END;
  145.  
  146.     ADBOpBPtr* = POINTER TO ADBOpBlock;
  147.  
  148.     ADBDataBlock* = (*ΔΔPACKEDΔΔ*) RECORD
  149.         devType*:                CHAR;                                    (* device type *)
  150.         origADBAddr*:            CHAR;                                    (* original ADB Address *)
  151.         dbServiceRtPtr*:            ADBServiceRoutineUPP;                    (* service routine pointer *)
  152.         dbDataAreaAddr*:            Types.Ptr;                                    (* data area address *)
  153.     END;
  154.  
  155.     ADBDBlkPtr* = POINTER TO ADBDataBlock;
  156.  
  157.     ADBSetInfoBlock* = RECORD
  158.         siService*:                ADBServiceRoutineUPP;                    (* service routine pointer *)
  159.         siDataAreaAddr*:            Types.Ptr;                                    (* data area address *)
  160.     END;
  161.  
  162.     ADBSInfoPtr* = POINTER TO ADBSetInfoBlock;
  163.  
  164.  
  165. PROCEDURE ADBReInit*;
  166.     (*$IF NOT GENERATINGCFM*)
  167.     INLINE PASCAL $A07B;
  168.     (*$END*)
  169. PROCEDURE ADBOp*(data: Types.Ptr; compRout: ADBCompletionUPP; buffer: Types.Ptr; commandNum: INTEGER): Types.OSErr;
  170.     EXTERNAL PASCAL;
  171. PROCEDURE CountADBs*(): INTEGER;
  172.     (*$IF NOT GENERATINGCFM*)
  173.     INLINE PASCAL $A077, $3E80;
  174.     (*$END*)
  175. PROCEDURE GetIndADB*(VAR info: ADBDataBlock; devTableIndex: INTEGER): ADBAddress;
  176.     (*$IF NOT GENERATINGCFM*)
  177.     INLINE PASCAL $301F, $205F, $A078, $1E80;
  178.     (*$END*)
  179. PROCEDURE GetADBInfo*(VAR info: ADBDataBlock; adbAddr: Types.ByteParameter): Types.OSErr;
  180.     (*$IF NOT GENERATINGCFM*)
  181.     INLINE PASCAL $101F, $205F, $A079, $3E80;
  182.     (*$END*)
  183. PROCEDURE SetADBInfo*((*CONST*)VAR info: ADBSetInfoBlock; adbAddr: Types.ByteParameter): Types.OSErr;
  184.     (*$IF NOT GENERATINGCFM*)
  185.     INLINE PASCAL $101F, $205F, $A07A, $3E80;
  186.     (*$END*)
  187.  
  188. (* $ALIGN RESET*)
  189. (* $POP*)
  190.  
  191.  END DeskBus.
  192.